首先就從Codewars的8kyu開始唄,我會因為題目簡單而腦補之後的需求可能性進行一點彈性和可讀性的實作
Codewars的題目是有分等級的,最簡單的是8kyu然後數字越小越難,越容易牽扯到「效能」的問題,如果有其他見解的朋友歡迎跟我討論XDD
這30天的練習過程大概最低只會用到4~6kyu的範圍,而一開始我們就先從最簡單的來牛刀小試一下唄
這一次的題目是隨機出來的,反正就隨便挑了一題啦XDDD
(Codewars會每週寄信一些題目,今天這題就是從信裡面來的
廢話不多說就來看看題目吧,今天的題目非常簡單(廢話 因為是8kyu啊XD
今天的題目需求很簡單,只要把輸入的字串去掉前後第一個字元即可,且不需要考慮低於兩個字元的字串。
題目範例輸入輸出顯示,如果輸入空字串,則印出小寫的ok,這邊並沒有顯示如果輸入1個字元時會發生什麼事情,這時候因為我們現在沒有Product Owner所以我們就把它當作輸入1個時,也要印出ok吧。
接下來要拆解需求啦
可以看得出來第1個需求和第2個需求是可以合在一起做撒尿牛玩的,啊不是我是說可以合在一起用Substring做掉的。
接下來開始實作吧! 把專案創建好之後,就把第一個測試案例名稱寫出來吧!
我們要從最簡單的第一步開始,如果覺得一開始有點卡卡的就可以加入3A原則的註解唷!
接下來就可以寫Code,一開始Test Case中的Code會長這樣
而Production Code 就長這樣
接下來就跑一下測試,理所當然的會Fail,如果過了就見鬼了,這裡就可以看見我們的第一個紅燈,這時候來Commit一下吧
接下來把Production Code改一下吧,用最小步伐讓Test Case Pass!
接下來跑個測試,很明顯的他亮了我們這個題目的第一個綠燈! YA!
接下來充新審視一下Code,摁,看起來根本不需要更改,我們就寫第二個Test Case吧!
這時候來Commit一下吧
現在寫了第二個test case,因為我是一個比較謹慎的人類,所以我寫了一個一定會過的test case
很正常的他也綠燈了
接下來審視一下test code吧!
會發現其實他們每個都蠻多冗長的宣告過程,於是我把它重構了一下,test case就變成這個樣子了,簡短,也明瞭,把兩個test code 都重構完成然後跑完測試都pass後,就commit一下吧!
Tips: 如果你有Resharper 那就用Ctrl +R + I讓他inline解決吧XD
接下來寫第三個test case吧!
寫完測試就來跑一下測試吧!
很明顯的這一次他也乖乖的亮紅燈了
接下來就來改Production Code吧!!!
改好之後來跑個測試吧! 很正常的 我會自己跑過了才說他過了嘛!
所以他過了
基本上現在的測試已經可以涵蓋所有輸入了,不過我這個人是謹慎的人所以我們來多寫幾個測試案例吧!!!
現在回過頭來看看我們的Production Code吧!
看有沒有重構的可能性
接下來Production Code就變這樣了,用三元運算式的方式把他表示
跑過測試都All Pass 之後就再Commit一次吧!
然後再Codewars上提交! Pass!!
通過! 接下來我最喜歡的部分就是去看看別人寫這題寫得如何XD
第一個就真的完全不把輸入StringEmpty放在眼裡直接用SubString的方法幹出來了XDDD
看起來我這一次寫的跟大家差不多XDD
這是這一次的Git Url
歡迎大家來參考參考XDD
https://github.com/SQZ777/Codewars_RemoveFirstandLastCharacter.git
下一題,明天見!